![]() デバイスのインタフェースアプリケーションプログラム及び動作センサ
专利摘要:
アプリケーションプログラムとデバイスの動作センサとのインタフェース。一態様では、アプリケーションプログラムがデバイスで使用可能な複数の異なる種類のアプリケーションを実行する場合、動作検出デバイスで動作するアプリケーションプログラムから高レベルのコマンドを受け取る。高レベルのコマンドは、回転動作センサ及び直線動作センサを含むデバイスの動作センサの出力から得られる高レベルの情報を要求する。コマンドが変換されることで、動作センサによる動作センサデータ出力の低レベルの処理を行い、低レベルの処理はアプリケーションの種類の要求に従い、コマンドに応答して高レベルの情報を判断する。アプリケーションプログラムは、低レベルの処理を無視し、高レベルの情報がアプリケーションプログラムに提供される。 公开号:JP2011510401A 申请号:JP2010543226 申请日:2009-01-15 公开日:2011-03-31 发明作者:ザックス,デイビッド;ジァン,ジョセフ;ナシリ,スティーヴン,エス. 申请人:インベンセンス,インク.Invensense,Inc.; IPC主号:G06F9-54
专利说明:
[0001] 本発明は、2008年1月18日に出願され「Motion Sensing Application Interface」と題される米国仮特許出願第61/022,143号の利益を主張し、2007年7月6日出願され「Integrated Motion Processing Unit (MPU) WithMEMS Inertial Sensing And Embedded Digital Electronics」と題される同時係属の米国実用出願第11/774,488号に関連し、いずれも全体として参照することにより本書に盛り込まれている。] [0002] 本発明は、概略的に動作検出デバイスに関し、特に、デバイスの動作センサのインタフェースアプリケーションプログラムに関する。] 背景技術 [0003] 加速度計又はジャイロスコープといった動作センサは、多くの場合、電子デバイスで使用される。直線加速度を測定するために加速度計を使用でき、角速度を測定するためにジャイロスコープを使用し得る。動作センサの市場は、携帯電話、ビデオゲームのコントローラ、PDA、携帯インターネット機器(MID)、小型カーナビゲーションデバイス(PND)、デジタルスチルカメラ、デジタルビデオカメラ等に及んでいる。例えば、携帯電話は、加速度計を使用して空間内でのデバイスの傾斜を検出することができ、傾斜に応じた向きにビデオ映像を表示し得る。ビデオゲームのコンソールのコントローラは、加速度計及び/又はジャイロスコープを使用して、ゲームに入力を与えるよう使用するハンドコントローラの動作を検出する。画像及び映像の安定化は、レンズ又は画像センサがジャイロスコープによって測定されるハンドジッタを補償するよう代えられる場合、低価格又は中価格のデジタルカメラにおいても重要な特徴である。全地球測位システム(GPS)及び位置情報サービス(LBS)での適用は、デバイスの正確な位置の判定に依存し、GPS信号が弱かったり又は使用できない場合、又はGPSによる位置の発見の精度を強化するために、動作センサが多くの場合必要となる。] [0004] 多くの既存の電子デバイスは、「ピーク検出」を具えた加速度計又は定常状態の測定といった、非常に基本的な動作センサのみを使用する傾向にある。例えば、現状の携帯電話は、加速度計を使用してデバイスの傾斜を判定するが、それは定常状態の測定の重力測定を用いて判断し得る。このような単純な判定法は、例えば、ジャイロスコープを用いたより高機能な適用又は正確なタイミング要求を有する他の適用では使用できない。デバイスにジャイロスコープが設けられていない場合、デバイスの傾斜及び加速度が確実に検出されない。これは、多くの場合、非ジャイロスコープ型のナビゲーションデバイスでミスリードする;例えば、「非ジャイロスコープ型」のデッドレコニング態様が、自動車が坂道にある信号機で停止する際に、自動車の位置を数ブロック誤判断する可能性がある。そして、デバイスの動作は地面に対して必ずしも直線的又は平行ではないため、加速度計又はジャイロスコープを用いた動作のいくつかの異なる軸の測定は、より大きな精度を要する。] [0005] より高機能な動作センサは、一般に、電子デバイスに使用されない。例えば、画像安定化及びデッドレコニング機能は、GPS付きの携帯電話又は高解像度のカメラにとって、いずれも重要な機能であるが、現状の携帯電話市場では利用可能な解決法がない。特定のアプリケーションにおいて、特定の移動に関する動作検出といった、より高機能な動作センサに関するある試みが行われている。しかしながら、これらの取り組みの多くは、失敗しているか又は製品としては十分に強固ではない。これは、動作を取得するための動作センサの使用が複雑なためである。例えば、ジャイロスコープを使用する場合、デバイスの傾斜又は移動を特定することは自明ではない。位置の検出、又は他の高機能な適用について、画像安定化のために動作センサを使用することは、動作センサに関する深い理解を要し、これにより、動作検出設計をより困難なものにしている。] [0006] また、動作検出設計の困難さは、1つのシステムから別のシステムに設計を移植する際の難しさによる。動作センサからの大部分の生データは集められ、デバイスで動作するアプリケーションソフトウェアのレベルで処理されるが、他のアプリケーションは同じセンサ出力を利用できない。さらに、動作検出設計は、一般に、非常にシステムに依存し、ある特定のアプリケーションを対象としているため、他のシステムに移植するのが妨げられる。例えば、画像安定化ソフトウェアは、一般に、使用し得る画像の解像度及びズーム範囲といった、ソフトウェアが使用されるデジタルカメラの特定のハードウェアに非常に依存する。] [0007] したがって、様々なアプリケーションで利用可能であり、動作センサデータの収集がより簡単に規定できてユーザによって使用され、様々なハードウェア要件に関する動作検出設計のより簡単な移植及びメンテナンスが可能な、単純なアプリケーションインタフェース(API)を提供するシステム及び方法が、多くのアプリケーションにおいて望まれている。] [0008] 本出願の発明は、デバイスの動作センサへのアプリケーションプログラムのインタフェーシングに関する。本願発明の一態様では、動作検出デバイスに提供される1又はそれ以上のアプリケーションについてのインタフェースを与えることが、動作検出デバイスで動作するアプリケーションプログラムから高レベルのコマンドを受け取るステップであって、アプリケーションプログラムが、動作検出デバイスで使用し得る複数の異なる種類のアプリケーションのうちの1つを実行するステップを有する。高レベルのコマンドが、回転運動センサ及び直線運動センサを有する動作検出デバイスの動作センサの出力から得られる高レベルの情報を要求する。高レベルのコマンドを変換して、動作センサによって出力される動作センサデータの低レベルの処理を発生させ、低レベルの処理が、アプリケーションの種類の要求に従い、高レベルのコマンドを受け取るのに応じて高レベルの情報を判定する。アプリケーションプログラムが低レベルの処理を無視し、高レベルの情報がアプリケーションプログラムに提供される。] [0009] 本発明の別の態様では、動作検出デバイスで動作するアプリケーションプログラムに動作センサからの動作センサデータを提供するための方法が、第1のサンプリングレートで動作センサによって出力される動作センサデータをサンプリングするステップを有しており、動作センサが、回転運動センサ及び直線運動センサを有する。動作センサデータはバッファに記憶され、アプリケーションプログラムによって実行されるアプリケーションによって要求される第2のサンプリングレートでアプリケーションプログラムに関するバッファリングされた動作センサデータの少なくとも一部が検索され、第2のサンプリングレートが第1のサンプリングレートよりも低い。] [0010] 本発明の別の態様では、動作検出デバイスの動作センサからの動作センサデータを処理するための方法が、動作センサデータを使用して、動作検出デバイスの第1のアプリケーションを実行する第1のアプリケーションプログラムに情報を提供するように、第1のサンプリングレートで動作センサによって出力される動作センサデータをサンプリングするステップを有する。動作センサは回転運動センサ及び直線運動センサを有する。動作センサデータは、第1のサンプリングレートよりも低い第2のサンプリングレートにローパスフィルタリングされ、フィルタリングされた動作センサデータを使用して、第1のアプリケーションとは異なる動作検出デバイスの第2のアプリケーションを実行する第2のアプリケーションプログラムに情報を提供する。第1及び第2のアプリケーションプログラムは動作検出デバイスで同時に動作し、第1のアプリケーションは、第2のサンプリングレートよりも大きいサンプリングレートでサンプリングされる動作センサデータを要求する。] [0011] 本発明の態様は、動作検出デバイスで動作するアプリケーションで使用し得るアプリケーションプログラムのインタフェースを提供する。インタフェースにより、動作センサを有するデバイスの複雑な動作センサデータを使用したアプリケーションプログラムの容易な開発が可能となり、アプリケーションプログラムを様々なハードウェア及びオペレーティングシステムを有する様々な動作検出デバイスに移植し様々な動作検出デバイスから移植することができ、より簡単なシステムのメンテナンスを与える。本発明の他の態様は、サンプリングレート要求を緩和し、アプリケーションプログラムのための処理を減らして、検出データに関する情報をサンプリングし、要求をサンプリングする様々な検出データを具えたアプリケーションプログラムが可能となり、動作検出デバイスで同時に動作する。] 図面の簡単な説明 [0012] 図1は、本発明での使用に適した動作検出デバイスのブロック図である。 図2は、本発明での使用に適した動作処理ユニットの一実施例のブロック図である。 図3は、本発明のソフトウェア階層の一例を示すブロック図である。 図4は、アプリケーションプロセッサで動作する図3のソフトウェア層の例を示すブロック図である。 図5は、動作検出デバイスで実行されるAPIにアクセスするアプリケーションプログラムの本発明の方法を示すフローチャートである。 図6は、動作検出デバイスで実行される他のソフトウェア層とインタフェースを取るAPIの本発明の方法を示すフローチャートである。 図7は、動作検出デデバイスで同時に動作する様々なアプリケーションに関するデータを同時に処理するための本発明の方法を示すフローチャートである。 図8Aは、動作検出出力を受け取る際にバッファリングを与えてアプリケーションプロセッサの処理を減らすための本発明の方法を示すフローチャートである。 図8Bは、動作検出出力を受け取る際にバッファリングを与えてアプリケーションプロセッサの処理を減らすための本発明の方法を示すフローチャートである。 図8Cは、動作検出出力を受け取る際にバッファリングを与えてアプリケーションプロセッサの処理を減らすための本発明の方法を示すフローチャートである。 図8Dは、動作検出出力を受け取る際にバッファリングを与えてアプリケーションプロセッサの処理を減らすための本発明の方法を示すフローチャートである。] 図1 図2 図3 図4 図5 図6 図7 図8A 図8B 図8C 実施例 [0013] 本発明は、概略的に動作検出デバイスに関し、特に、デバイスの動作センサとアプリケーションプログラムとの間でインタフェースを取ることに関する。以下の説明は、当業者が本発明を作成及び使用することができるよう与えられており、特許出願及びその要件に照らして与えられる。ここに記載された好適な実施例及び一般的原理及び態様に対する様々な変更は、当業者にとって容易に明らかであろう。このため、本発明は、示された実施例に限定することを意図するものではなく、ここで説明される原理及び態様に合致する最も広い範囲と一致する。] [0014] 本発明の態様をより具体的に説明するために、以下の説明とともに図1乃至図8Dを参照されたい。] 図1 図8D [0015] 図1は、本発明の使用に適した動作検出システム又はデバイス10のブロック図である。デバイス10を、ユーザによって空間を移動させ空間でのその動き及び/又は向きによって検出し得る携帯型デバイスといったデバイス又は装置として提供し得る。このような携帯型デバイスは、携帯電話、携帯情報端末(PDA)、ビデオゲーム機、ビデオゲームコントローラ、ナビゲーションデバイス、携帯インターネット機器(MID)、パーソナルナビゲーションシステム(PND)、デジタルスチルカメラ、デジタルビデオカメラ、双眼鏡、望遠レンズ、又は他の携帯機器、又はこれらのデバイスの1又はそれ以上の組み合わせとすることができる。他の実施例では、デバイス10のある部分を携帯型又は可動型デバイスに提供し得る一方、他の部分をデスクトップのコンピュータ、卓上型電子機器、サーバコンピュータ等といった、ネットワーク接続を介して可動型又は携帯型の部分と通信し得る非携帯型デバイスに提供し得る。] 図1 [0016] デバイス10は、アプリケーションプロセッサ12、メモリ14、インタフェースデバイス16、動作処理ユニット20、アナログセンサ22、及びデジタルセンサ24を有する。アプリケーションプロセッサ12は、1又はそれ以上のマイクロプロセッサ、中央処理装置(CPU)、又はデバイス10のために様々なソフトウェアプログラムを実行する他のプロセッサとすることができる。例えば、メニューナビゲーションソフトウェア、ゲーム、カメラ機能制御、ナビゲーションソフトウェア、及び電話又はその他の機能インタフェースといった様々なソフトウェアアプリケーションプログラムを提供し得る。ある実施例では、1つのデバイス10に複数の異なるアプリケーションを提供することができ、これらの実施例のいくつかは、複数のアプリケーションがデバイス10で同時に実行される。アプリケーションプロセッサで実行されるソフトウェアの例を、図3及び図4を参照して以下に詳細に説明する。] 図3 図4 [0017] また、デバイス10は、アプリケーションプロセッサ12を補助するためのメモリ14(RAM、ROM、フラッシュ、等)といった要素を有する。インタフェースデバイス16は、ディスプレイスクリーン、音響スピーカ、ボタン、タッチパネル、ジョイスティック、スライダ、プリンタ、スキャナ、カメラ等といったユーザに入力及び/又は出力を与える様々な異なるデバイスとすることができる。メモリ14及びインタフェースデバイス16を、バス18によってアプリケーションプロセッサ12に接続し得る。] [0018] また、デバイス10は、動作処理ユニット(MPUTM)20を有する。MPUは、空間内のデバイス10(又はその一部)の動きを測定し得る動作センサを含むデバイスである。例えば、MPUは、1又はそれ以上の回転軸及び1又はそれ以上の加速軸を測定し得る。ある実施例では、これらの機構を実行するための要素が1つのパッケージに一体化される。MPU20は、アプリケーションプロセッサ12が接続されたインタフェースバス21に運動検出データを送信し得る。一実施例では、プロセッサ12は、バス21のコントローラ又はマスタである。例えばある実施例では、インタフェースバス21は、I2C又はシリアル周辺インタフェース(SPI)バスといった基準に従って実行されるデジタルシリアルインタフェースバスとすることができる。ある実施例は、インタフェースバス21と同じバスであるバス18を提供し得る。] [0019] MPU20は、1又はそれ以上の回転運動センサ26及び1又はそれ以上の直線運動センサ28を含む動作センサを有する。例えばある実施例では、回転運動センサはジャイロスコープであり、直線運動センサは加速度計である。ジャイロスコープ26は、ジャイロスコープ26を収容するデバイス10(又はその一部)の角速度を測定し得る。特定の実施例において検出を必要とする運動に応じて、一般に1乃至3のジャイロスコープを提供し得る。加速度計28は、加速度計28を収容するデバイス10(又はその一部)の直線加速度を測定し得る。特定の実施例において検出を必要とする運動に応じて、一般に1乃至3の加速度計を提供し得る。例えば、3つのジャイロスコープ26及び3つの加速度計28を使用する場合、全部で6の自由度を検出する6軸の検出装置が設けられる。] [0020] ある実施例では、マイクロマシン技術(MEMS)としてジャイロスコープ26及び/又は加速度計28を実施し得る。また、動作センサ26及び28からのデータのための記憶レジスタといったサポートハードウェアを提供し得る。] [0021] ある実施例では、MPU20はまた、ハードウェア処理ブロック30を含め得る。ハードウェア処理ブロック30は、ロジック又はコントローラを含んでおり、ハードウェアの動作センサのデータ処理を提供し得る。ある実施例では、例えば、運動アルゴリズム又はアルゴリズムの部分をブロック30によって実行し得る。ある実施例は、ブロック30にハードウェアバッファを含めて、動作センサ26及び28から検索された検出データを保存し得る。例えば、ここで説明するある実施例では、図8A乃至図8Dを参照して以下に詳細に説明するように、ハードウェアバッファが、運動アルゴリズムによってサンプリングされる検出データを記憶する。] 図8A 図8D [0022] MPU20の一例を図2を参照して以下に説明する。本発明での使用に適したMPUの他の例が、「Integrated Motion Processing Unit (MPU) WithMEMS Inertial Sensing and Embedded Digital Electronics」と題され2007年7月6日に出願された同時係属の米国特許出願第11/774,488号に記載されており、参照することにより全体として本明細書に盛り込まれている。デバイス10のMPU20に関する適切な実施例は、Invensense,Inc.of Santa Clara,CAによって市販されている。] 図2 [0023] また、デバイス10は、他のタイプのセンサを含め得る。アナログセンサ22及びデジタルセンサ24を使用して、デバイス10が置かれている環境に関する付加的な検出データを提供し得る。例えば、気圧計、コンパス、温度センサ、光センサ(カメラセンサ、赤外線センサ等)、超音波センサ、電波センサ、又は他のタイプのセンサを提供し得る。図示する実施例では、デジタルセンサ24が、インタフェースバス21に直接的に検出データを提供し得る一方、アナログセンサが、インタフェースバス21にデジタル形式で検出データを与えるアナログデジタル変換器(ADC)34に検出データを提供し得る。図1の実施例では、ADC34が変換デジタルデータをMPU20のハードウェア処理部30又はバス21に出力し得るように、ADC34がMPU20に設けられている。他の実施例では、ADC34をデバイス10の他の場所で実施し得る。] 図1 [0024] 図2は、ここで説明する本発明での使用に適した動作処理ユニット20の実施例の一例を示す。図2のMPU20は、検出データの処理を実行する数値演算ユニット(ALU)36を有する。ALU36を、プログラムRAM(ランダムアクセスメモリ)37に記憶されここから検索される1又はそれ以上のプログラムによって知的に制御し得る。ALU36は、温度センサ39といった他のセンサとともにジャイロスコープ26及び加速度計28といった動作センサからALU36又は他の処理ユニットとは独立して検出データを読み出し得る、ダイレクトメモリアクセス(DMA)ブロック38を制御し得る。MPU20又はMPU20の外部に、センサのいくつか又は全てを設けることができ、MPU20の外部にある加速度計28を図2に示す。また、DMA38は、読み出し又は書き込み動作の状態に関する割り込みをALUに提供し得る。DMA38は、データRAM40にセンサからの検出データの読み出しを記憶するために提供し得る。データRAM40は、ALU36に処理データを与え、ALU36は保存のためにデータRAM40に処理データを含む出力を与える。バス21(図1にも示す)を、アプリケーションプロセッサ12がMPU20によって読み出され及び/又は処理されるデータを読み出し得るように、データRAM40及び/又はFIFOバッファ42の出力に接続し得る。] 図1 図2 [0025] FIFO(先入れ先出し)バッファ42を、バス21を介してアプリケーションプロセッサ12によってアクセスし得る、検出データを記憶するためのハードウェアバッファとして使用し得る。バッファ42といったハードウェアバッファの使用を、以下のいくつかの実施例で説明する。例えば、マルチプレクサ44を使用して、FIFOバッファ42に生の検出データを書き込むDMA38、又はFIFOバッファ42に処理データ(例えば、ALU36によって処理されたデータ)を書き込むデータRAM40のいずれかを選択し得る。] [0026] このため、図2に示すMPU20は、動作センサデータの処理の1又はそれ以上の実行をサポートし得る。例えば、MPU20は、プログラムRAM37の中のプログラムがALU36を制御し、検出データを知的に処理してアプリケーションプロセッサ12及びそこで動作するアプリケーションプログラムに高レベルのデータを提供し得る場合には、生の検出データを完全に処理し得る。あるいは、アプリケーションプログラムが取得する高レベルの情報を与える前に、アプリケーションプロセッサ12で処理するさらなる低レベルの処理のためにアプリケーションプロセッサ12によって処理データを検索し得る場合には、ALU36を用いてMPU20によって生の検出データを予処理又は部分的に処理し得る。あるいは、アプリケーションプログラムに関する高レベルのデータへの所要の低レベルの処理のために、アプリケーションプロセッサ12によって生の検出データが検索される場合には、生の検出データをMPU20によって単にバッファリングし得る。ある実施例では、同じデバイス10で動作する様々なアプリケーション又はアプリケーションプログラムが、アプリケーション又はプログラムに最も適したこれらの処理法のうちの様々なものを使用し得る。] 図2 [0027] 図3は、動作検出デバイス10のアプリケーションプロセッサ12で実施/実行し得る本発明のソフトウェア階層50の一例を示すブロック図である。電子メモリ又はハードディスク、光ディスク等のような他の記憶媒体といったコンピュータ可読媒体にソフトウェア階層を提供し得る。] 図3 [0028] アプリケーションソフトウェア層52は、1又はそれ以上のアプリケーション開発者によって一般に提供され、アプリケーションプロセッサ12で動作する1又はそれ以上のアプリケーションプログラムを有する。アプリケーションプログラムは、デバイス10で特定のアプリケーション(又はその一部)(それは、「モード」とも称される)を実行し、例えば、各アプリケーションは、1又はそれ以上のアプリケーションプログラムによって実行される。アプリケーションプログラムは、カメラの適用におけるカメラのレンズの制御及び画像の表示、ゲームの適用におけるゲームの実行、ナビゲーションの適用におけるデバイス10の方向及び現在位置の出力といった、それらの適用に特有な適切なユーザインタフェース機能とともに、処理及び入力/出力機能を提供し得る。] [0029] アプリケーションソフトウェア層52は、デバイスのリソースを管理するシステムソフトウェア層54と通信するが、これはハードウェアとソフトウェア要素との間の通信を含む。内蔵型システムアプリケーションでの動作検出のためのソフトウェア構造を、図3に示すように別個の層で規定し得る。このように、システムソフトウェア54は、アプリケーションプログラミングインタフェース(API)層56と、リアルタイムオペレーティングシステム(RTOS)層58と、動作アルゴリズム層60と、センサデバイスドライバ層62とを有する。また、必要に応じてさらなる層を含めることができる。] 図3 [0030] API層56は、使用するアプリケーションプログラムのために抽象化された高レベルの機能のセットを提供するが、これはアプリケーションプログラム及び動作センサといったデバイス10の低レベルの要素との間のインタフェース及び通信を大いに簡略化する。API層は、動作センサデータに関して使用する様々な低レベルの機能又はアルゴリズムの「動作ライブラリ」を提供することによって、デバイス10の動作検出エンジンへのインタフェースを強化する。API層56の中の特定のAPIを規定して、そのようなAPIにアクセスするアプリケーションによって対応するアルゴリズムを使用し得る場合、1又はそれ以上の動作アルゴリズムに対応し得る。] [0031] API層56は、アプリケーションプログラムによって使用される関連する制御パラメータ又は設定値とともに、所定の高レベルの抽象化コマンドを提供して、デバイス10の動作センサからサンプリングされた動作センサデータに基づいて、高レベルの情報を含む情報を検索し得る。API層56は、高レベルのコマンドをアプリケーションプログラムからコマンドの実行に要される必要な動作アルゴリズムに変換し、これにより、特定のアプリケーション、特定のアプリケーションに必要な処理に関連する情報に関する要求を変換し得る。デバイス10で動作する各タイプのアプリケーションは、アプリケーションタイプに基づいて、動作に基づく高レベルのデータの特定のセットを要する。例えば、ユーザの動作/アプリケーションのカーソル制御タイプが、デバイス10の動作に基づいて、2次元又は3次元の座標を要することがある一方、アプリケーションの画像安定化のタイプが、デバイス10の動作に基づいて輪郭のぼやけ及び関連する情報の表示を要することがある。動作アルゴリズムAPIアクセスは、動作センサデータの低レベルの処理に関連する正確な要求を認知して、高レベルのコマンドに関連するアプリケーションに関して、アプリケーションプログラムによって命令された特定のタイプの高レベルの情報を得る。例えば、動作アルゴリズムは、画像安定化アプリケーション又は機能のために使用されることを示す高レベルのコマンドを受け取った後に、画像安定化アプリケーションのために、500Hzといった高いサンプリングレートで動作センサから動作センサデータをサンプリングすることが分かっている。] [0032] このため、低レベルの処理は、アプリケーションプログラムによって要される高レベルの情報を知的に判断し、アプリケーションプログラムにそれを提供し得る一方、アプリケーションプログラムは、要求された動作センサデータの低レベルの処理、及び高レベルの情報を得るのに必要となるその処理で使用される処理及びタイミング要求を無視し得る。例えば、アプリケーションプログラムの開発者は、生の検出データを収集及び処理するやり方を知る必要なしに、例えば、開発者のアプリケーションに適した処理された動作センサデータを受け取るためのAPIコマンドで問い合わせることのみを必要とする。API層56をできる限りオペレーションシステムに独立して規定して、できる限り持ち運びし得るアプリケーションソフトウェアを作成し得る。] [0033] API層56は、デバイス10で実行且つ使用し得る1又はそれ以上のタイプのアプリケーションに有用な複数の特定のタイプのAPIを提供し得る。例えば、携帯電話又はゲームでの適用といった特定の適用で使用される特定の動作検出タイプのAPIを提供し得る。複数の異なるタイプのアプリケーションが、デバイス10で好適に実施され、これらのアプリケーションに関する複数の様々なAPIが提供される。いくつかのタイプのアプリケーションが、特定のタイプのAPIを必要としない。例えば、ナビゲーションでの適用は、画像安定化のAPIの使用を必要としない。] [0034] ある実施例では、APIを低レベルのAPI(例えば、生データの取得、較正データの取得、初期化センサ、設定値パラメータ、数学的機能の実行)、中間レベルのAPI(例えば、横揺れ、縦揺れ、偏揺れ、機首方位、位置、又はぼやけの程度といった処理データの取得)、及び高レベルのAPI(例えば、1つの命令行でのDRカルマンフィルタの実行)にブレークダウンさせ得る。より基本的なアルゴリズム構成要素からアプリケーション開発者自身のアプリケーションの構築を望むアプリケーション開発者によって中間レベルのAPIを使用し得る。他の実施例は、2つのAPI層のレベルのみを提供し得る。APIソフトウェアは、システムの動作中にバックグラウンドで効果的に動作し、いくつかの異なるコンピュータ言語又はフォーマットで層52のアプリケーションプログラムを提供し得る。このため、API層56に関して、他のプログラム言語とともに使用し得る「結合」を形成し得る。] [0035] デバイス10のためのオペレーティングシステムとしてRTOS層58を提供して、リアルタイムでシステムリソースを制御且つ管理することができ、API層56、動作アルゴリズム層60、動作検出ドライバ62といった他の層とともにアプリケーションソフトウェア52の機能を可能にする。オペレーティングシステムは、アプリケーションプログラムとデバイス10の他のソフトウェア及び機能とのインタフェースをとることができる。RTOS層58は、リアルタイム動作を具えた内蔵型システムに適した様々な利用可能なオペレーティングシステムのうちの任意のものとし得る。RTOS層58は、RTOS層58によって提供される機能を用いるアプリケーションソフトウェア52を含む任意の他の層とやりとりし得る。デバイス10のための特定のオペレーティングシステム、又は、デバイス10とともに使用するよう構成されたより一般的なオペレーティングシステムとして、RTOS層58を実行し得る。] [0036] 動作アルゴリズム層60は、動作センサ及び他のセンサから与えられる生の検出データに関する知的で低レベルの処理を与える動作アルゴリズムの「動作ライブラリ」を提供する。層60のこのようなアルゴリズムは、生の検出データを取得して、高レベルの情報、及び/又はアプリケーションに特有な情報の中のデータを結合及び形成し得る。] [0037] 例えば、動作アルゴリズムは、いくつかの動作センサから動作センサデータを取得して、デバイスの横揺れ/縦揺れ/偏揺れ、又は2次元のスクリーン上でカーソルを位置決めするためのX及びY座標といった、特定のアプリケーションに有用な高レベルの情報の中のデータを処理及び/又は結合し得る。あるアルゴリズムは、動作センサから動作センサデータをサンプリングするための正確なタイミング要求を一般に有する。例えば、あるアルゴリズムは、動作センサデータを蓄積し、データ点を統合してデバイス10の動作角度又は他の動作特性を取得する。さらに、そのアルゴリズムは、動作センサのデータに加えて、1又はそれ以上の他のセンサからのデータを使用し、圧力、温度、及び/又は方向センサといった高レベルの情報を判定し得る。アプリケーションプログラムに高レベルの情報を与えるAPI層56によってアルゴリズムの出力を報告又は検索することができ、これにより、動作アルゴリズムによって実行された処理は、アプリケーション開発者によって認識されることを要しない。開発者は、動作センサデータに基づいて所望の高レベルの情報を要求するために、API層56で与えられるAPI機能を使用することのみを要する。] [0038] 動作アルゴリズムを1又はそれ以上の特定のアプリケーション及び/又はAPIに関連させ得る。例えば、「運動の検出」APIは、一連の検出データをチェックして判定されたこのような態様が検出された場合にジェスチャといった「態様」を出力するジェスチャ認識動作アルゴリズムを使用し得る。このようなジェスチャは次に、アプリケーションソフトウェアに対する単純なコマンド、入力又は事象として、API層56で規定される。できる限り独立したオペレーションシステムとして動作アルゴリズムを設計することができ、これにより、異なるシステム間でアルゴリズムを移植する際の障害が減る。] [0039] 検出デバイスドライバ層62は、デバイス10のハードウェアセンサへのソフトウェアインタフェースを提供する。ドライバ層62は、図1を参照して説明されるようなジャイロスコープ26、加速度計28、及び他のセンサ22及び24を含むデバイス10の複数のタイプのセンサとのインタフェースを提供する。例えば、動作センサ26及び28の検出結果を、ハードウェアによってMPUのレジスタに書くことができ、その後それらのレジスタがデバイスドライバ層62によってアクセスされる。そして、ドライバ層62が、処理のために動作アルゴリズム層60の1又はそれ以上の動作アルゴリズムにアクセス検出データを提供し得る。ある実施例では、デバイスドライバ層62が、動作アルゴリズムを用いてハードウェア処理がいくつかの検出データを処理する場合、MPUのハードウェア処理部30とインタフェースをとる。] 図1 [0040] 図4は、アプリケーションプロセッサ12で動作する図3のソフトウェア層の例を示すブロック図である。アプリケーションソフトウェア層52は、複数の様々なアプリケーションプログラムを含めて、様々な異なるタイプのアプリケーションを実行することができる。例えば、メニューナビゲーションとともに電話機能(他の電話に電話をかける、電話を受ける、ユーザにそれらを提供する、等)を実行する1又はそれ以上のアプリケーションプログラム60によって携帯電話での適用を実施し得る。デバイス10の2次元ディスプレイスクリーンへのグラフィック画像の表示、デバイス10の音響スピーカからの音声の出力、及びボタン、取っ手、ジョイスティック、スタイラスペン、タッチパッド又はタッチパネル、マイク、又は他の入力装置を介したユーザの入力に基づく出力の変更といった、1又はそれ以上のゲームでの適用を、様々なビデオゲームを提供するアプリケーションプログラム62によって実行し得る。ユーザの歩行距離を測定し他の身体的特性を測定する歩数計を制御且つ表示するための健康及び歩数計アプリケーションプログラム64によって、健康器具での適用を実行し得る。画像安定化、ズーム及び解像度機能等を含むデジタルスチルカメラ又はデジタルビデオカメラを制御するためのアプリケーションプログラム66によって、デジタルカメラでの適用を実行し得る。小型ナビゲーションシステム(PND)、歩行者デッドレコニング(PDR)、又は他のナビゲーション機能のためのアプリケーションプログラム68によって、ナビゲーションでの適用を実行することができ、これらのデバイスを制御してユーザに現在位置といったナビゲーション結果を出力するためのアプリケーションプログラムを含めることができる。] 図3 図4 [0041] RTOS層58が、API層56、動作アルゴリズム層60、及び検出デバイスドライバ層62を含む他のソフトウェア層を監視する。API層56は、様々なタイプのAPIを含めることができ、各APIは、デバイス10によって実行し得る1又はそれ以上のアプリケーションプログラムに有用な特定のタイプの高レベルの情報を特徴とする。図4の例では、API層56が、動作検出API70、画像安定化API72、及びナビゲーションAPI74を有する。] 図4 [0042] 動作検出API70は、デバイス10(又はその一部)の動作を説明し又はデバイスの動作によって判断される態様を説明する高レベルの情報を要求するための高レベルのコマンド及び機能を含めることができる。このような高レベルの機能は、ユーザによる特定の動作入力を認識するジェスチャ認識を含めることができ、特定のコマンドを呼び出す。例えば、あるジェスチャが、特定の方向/向き又は一連の特定の方向/向きにデバイス10を動かし、及び/又は特定の時間、「削除」、「パン撮り」、「ズーム」等のジェスチャに関連する機能を初期化することを含めることができる。API70により、開発者が生の動作センサデータを用いたこれらのジェスチャのチェックのやり方又は適切なアルゴリズムを用いたこのような検出データの処理のやり方を認識する必要なしに、アプリケーションプログラム開発者が、特定の予め規定されたジェスチャが検出されたかどうかの要求を簡略化し得る。他の動作センサアプリケーションは、表示又はカーソル制御のスクロール、動作/方向データといったゲームに入力が与えられたことを表示するデータの要求、又は武器の使用又はドアを開けるといったスクリーン上の図形オブジェクトを動かしゲームの中にある機能をアクティブにするためのジェスチャといった、ユーザインタフェース機能に関連する動作データの要求を含む。] [0043] API層56の様々なAPIのうちの別の例は、画像安定化API72である。このようなAPIにより、アプリケーションプログラムが、例えば、デジタルスチルカメラ又はビデオカメラで使用される、高レベルの画像安定化の機能に関するデバイス10の状態を要求し得る。例えば、このような高レベルの画像安定化機能は、画像取得の間に検出された特定の動作量に基づいてカメラのレンズによって取得された画像の中のぼやけ量及びその度合いの推定を含めることができる。アプリケーションプログラムが生の検出データを用いてこのようなぼやけを計算したり、アルゴリズムで生の検出データを処理する必要がない場合、API72により、アプリケーションプログラムが画像のぼやけ量の要求を簡略化し得る。他の高レベルの画像安定化機能は、アプリケーションプログラムが取得画像のデジタル処理を要求し得る画像の再構築を含めることができ、そのような処理自身を実施する必要なしに、元の色又はぼやけた画像の他の特性を補正又は再構築する。他の画像安定化機能は、点広がり関数(PSF)、画像融合、又は動作検出に関する(ぼやけといった)特定の特徴についての画像推定を含めることができる。] [0044] API層56の様々なAPIのうちの別の例は、ナビゲーションAPI74である。このAPIにより、アプリケーションプログラムが、例えば、ナビゲーションデバイスで使用される高レベルのナビゲーション機能に関するデバイス10の状態を要求し得る。例えば、このような高レベルのナビゲーション機能は、デバイス10のデッドレコニング位置を提供することを含めることができ、このようなデッドレコニング位置推定において重力を補償する。API74により、アプリケーションプログラムが、このような補償自身を実行する必要なしに、データにおいて補償されるそのような重力の要求を簡略化し得る。他の高レベルのナビゲーション機能は、検出データにナビゲーションカルマンフィルタを適用することを含めることができ、デバイス10の位置及び/又は速度について継続的に更新される情報を与える際に、記録位置の誤差を補償し、雑音マトリクス又は処理マトリクスを設定する。] [0045] API層56の異なるAPIを、アプリケーション層52で様々な複数のアプリケーションを実行する全て1つのデバイス10で提供し得る。APIの使用し易さにより、各アプリケーション開発者が特定のアプリケーションについて動作センサデータの収集及び処理における専門知識を有するよう要求されることなしに、1つのデバイス10に幅広く且つ様々なアプリケーションを提供し得る。ある実施例では、デバイス10で複数のアプリケーションを同時に実行し得る。このようなことを図7を参照して以下に詳細に説明する。] 図7 [0046] 動作アルゴリズム層60は、API層56のAPIによって呼ばれるフィルタといったアルゴリズムを含めることができる。動作アルゴリズムにいくつかは、空間におけるデバイス10の現在の向きを提供する、又はデバイスが現在空間内を動いているか否かを表示するといった、基本的な機能的アルゴリズムとすることができる。アルゴリズムは、様々なセンサの出力を結合して結果を処理し、生の検出データから得られるより高レベルの情報とともに、より高精度な検出結果を与え得る。] [0047] また、特定のアプリケーションのために、より特徴的なアルゴリズムを含めることができる。例えば、動作アルゴリズムプログラムが、動作検出API70とともに使用するジェスチャ認識アルゴリズム80を含めることができ、入力デバイスを有するユーザによって特定のジェスチャが行われたか否かを判断する。このようなアルゴリズムは、ユーザが検出データ等に基づいて「タッピング」ジェスチャ又は他のジェスチャを入力するか否か又は、より「中間レベル」のAPIに関しては、デバイスの横揺れ、縦揺れ及び偏揺れ又はデバイスのZ回転を提供するか否かを判断することができる。同様に、動作検出API70とともにカーソル制御アルゴリズム82を使用して、ユーザ入力デバイスに関して、生の動作センサデータからアルゴリズムによって判定される横揺れ、縦揺れ及び偏揺れに基づいて、カーソルが表示スクリーン上に表示される場所であるX−Y座標を判断し得る。また、ディスプレイスクリーン上のアイコンがセンサ入力に基づいてユーザによって選択されているかどうかを判断するためのものといった、他のユーザインタフェース及び連続的な制御アルゴリズムを使用することができ、カーソル制御の際の手ぶれを補償し、動作センサデータに基づいて1又はそれ以上の表示画像を移動させる。動作検出API70とともにゲーム用のアルゴリズム84を使用して、入力としてアプリケーションがゲーム機能を制御する場合に、特定のジェスチャ又は動作を受けたか否かといった、ゲームの適用に関するデータを提供し得る。] [0048] 画像安定化アルゴリズムは、ぼやけの推定及び画像再構築アルゴリズムを含めることができる。ぼやけのアルゴリズム86を使用して、カメラのレンズによって取得される画像といった画像取得の際に動作センサデータに基づいて、画像にぼやけが発生したか否かを判断し得る。例えば、アルゴリズムが点広がり関数(PSF)を使用して、ぼやけを判定し得る。画像再構築アルゴリズム88を使用して、例えば、ぼやけを介して歪められ又は除去された画像の特性を補正又は再構築し得る。同時係属の米国特許出願第11/774,488号に、他の画像安定化アルゴリズムが説明されており、参照することにより全体として本書に盛り込まれている。ナビゲーションアルゴリズムは、デッドレコニングが判定された場合に、重力を補償するよう使用し得る、デッドレコニング重力補償アルゴリズム90と、検出位置の誤差を補償するよう使用し得るナビゲーションカルマンフィルタ92とを含めることができる。例えば、デッドレコニング位置アルゴリズムは、1又はそれ以上の加速度計からのデータを使用してデバイス10の位置を判断し、1又はそれ以上のジャイロスコープ26からのデータを使用してデバイス10の動作方位又は方向を判断し得る。] [0049] デバイスドライバ層62は、図3を参照して上述したような、デバイス10のハードウェア動作センサ26及び28及び他のセンサ22及び24とのソフトウェアインタフェースを提供する。層62は、図1を参照して説明したような、ジャイロスコープ26、加速度計28、気圧計、コンパスセンサ、及び他のセンサ用ドライバを含め得る。] 図1 図3 [0050] 図5は、動作検出デバイス10で実施されるAPIにアクセスするアプリケーションプログラムの本発明に係る方法200を示すフローチャートである。本方法200及びここで説明する他の方法は、特に記載しない限り、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせで実施し得る。プロセッサ又はコンピュータによって実行し得るプログラム命令又はプログラムコードを用いて、本方法を実施することができ、電子メモリ、磁気テープ、磁気ディスク、光ディスク等といったコンピュータ可読な媒体に提供し得る。] 図5 [0051] 方法200では、アプリケーションプログラムが、アプリケーションプログラムに有用な動作検出機能を提供するAPI層56の特定のAPIとインタフェースをとる。ある実施例では、複数のアプリケーションが、1つのAPIとインタフェースをとることができる一方、他のアプリケーションプログラムが専用のAPIを有し得る。また、アプリケーションプログラムは、必要に応じて、複数タイプのAPIにアクセスし得る。APIとのインタフェースは、アプリケーションプログラムがそれが要求する情報の実施詳細を無視し得るような高レベルである。このため、例えば、APIへの命令は、「デバイスの現在位置を提供する」こと又は「最新の画像に関するぼやけたカーネルを提供する」こと又は「デバイスが現在示す運動のタイプを提供する」ことと等しいものにすることができる。] [0052] また、本発明のAPIは、「イベント駆動プログラミング」を使用し得る。例えば、動作検出APIを使用する場合、アプリケーションプログラムは、一般に、10ms毎の動作センサの入力のチェックを必要としない。その代わりに、アプリケーションプログラムが、特定の動作センサデータから成るジェスチャを探す場合、そのようなジェスチャを検出する(これは、1つの「イベント」である)ときに、それはAPIを要求してアプリケーションプログラムに割り込む。アプリケーションプログラムによる本発明に係るAPIの使用例を、以下の表1及び2に、「ml」が「動作ライブラリ」を表すものとして示す。 mlInitializeSensors(); mlRegisterGestures (ML_DOUBLE_TAP|ML_ROLL); mlGestureCallBack (got Gesture); ・・・ void gotGesture(gesture) { if (gesture == ML_DOUBLE_TAP) { [...If the double tap gesture is detected, perform the functions or operations listed here.] } else if (gesture==ML_ROLL) { [...If the roll gesture is detected, perform the functions or operations listed here.] } } 表1 ml.Bind(ml.EVT_DOUBLE_TAP, OnDoubleTap) // when a double tap gesture is detected, run the function "OnDoubleTap" ml.Bind(ml.EVT_ORIENTATION_CHANGE, OnOrientationChange) // when the orientation is changed, run the function "OnOrientationChange" ml.Bind(ml.EVT_MOTION, OnMotion) // when the portable device moves, run the function "OnMotion" ml.MainLoop() // Begin an infinite loop, running the engine in the background. Don't run any more of the program unless an event requires it. def OnDoubleTap(): [...If the double tap gesture is detected, perform the functions or operations listed here.] def OnOrientationChange(): [...If an orientation change is detected, perform the functions or operations listed here.] def OnMotion(): [...If movement is detected, perform the functions or operations listed here.]] [0053] 表2 図5の方法200は202で開始し、ステップ204で、アプリケーションプログラムが最初にAPIにコマンドを送信して、(フィルタといった)1又はそれ以上のアルゴリズムを設定又は「登録」する設定値を与え、デバイス10の動作の際の「コールバック機能」としてバックグラウンドで動作する。この設定値は、動作の際に、いずれのタイプの情報をアプリケーションが欲しているのかを特定し得る。このような設定値は、いずれのアルゴリズムが動作して(位置、方向、通知等といった)情報を提供するかをAPIに示し、アプリケーションプログラムに戻る。例えば、アプリケーションプログラムは、デバイス10がユーザの周りの空間を動く際に、デバイス10の位置及び方向の連続的な更新を望むことができる。アプリケーションプログラムは、アルゴリズムをセットアップしてアプリケーションプログラムに絶え間なく所望の情報を提供する設定値をAPIに送信し得る。ある実施例では、アプリケーションプログラムが、パラメータを任意に特定して、アプリケーションプログラムがAPIから情報を受け取る設定レート、このような情報をアプリケーションプログラムに送信する時間、通知すべき回数等といった、受け取るための高レベルの情報をカスタマイズし得る。さらに、アプリケーションプログラムは、状態が検出データに基づいて判断されたものに適合する場合に、アプリケーションプログラムに情報を送るための1又はそれ以上の状態を示す設定値を送信し得る。例えば、設定値は、検出された場合に、いずれの特別な動作又はジェスチャがAPIを始動させて動作又はジェスチャの発生のアプリケーションプログラムに通知するか、又は「ダブルタップ」ジェスチャとみなされる2つの検出タップ間の時間を特定し得る。また、アプリケーションプログラムは、データが処理されるアルゴリズム又はフィルタ、又は連続的動作の統合及び/又はデバイスが回転して始動させる角度の特定といった詳細を特定し得る。] 図5 [0054] ステップ206で、アプリケーションプログラムが、高レベルの情報を含む、バックグラウンドで動作するよう要求されたコールバック機能アルゴリズムに基づいてAPIからの情報を検索する。APIは、ステップ204の情報に基づいて開始しバックグラウンドで動作する適切なアルゴリズムの動作に基づいて、アプリケーションプログラムに所望の情報を提供する。ステップ206を、アプリケーションプログラムによって特定される要求にしたがって、又はAPI及び下層によって実行されるような要求にともなって、連続的に実行し得る。例えば、カメラの適用では、アプリケーションプログラムが過度のハンドジッタが起きたか否かについてユーザに警告信号を発することができる場合に、アプリケーションプログラムが、過度のハンドジッタが起きたか否かを連続的に認識することを必要とする。また、ステップ206を、(アプリケーションプログラムによって前もって特定されるような)条件が満たされた場合といった、不等間隔で実行し得る。例えば、アプリケーションプログラムは、デバイス10が特定の方向に極端に傾いた場合に、ユーザに出力を出してこのような傾きを知らせる必要があるだろう。方法200の他のステップの実行の際にステップ206を実行し得る。] [0055] ステップ208では、アプリケーションプログラムが、アプリケーションプログラムがそれを実行するための情報を必要か否かをチェックするが、このような情報は、(少なくとも部分的に)デバイス10の動作センサによって読み込まれる検出データに基づく。例えば、アプリケーションプログラムは、ユーザからのデバイス位置の要求に応じてデバイスの現在位置を認識することを必要とする。ステップ208で情報が要求されない場合、処理はステップ206に戻って(適切な場合に)情報を検索する。情報を必要としない場合、ステップ210でアプリケーションプログラムが、APIによって規定される高レベルのコマンドを用いてAPIからの必要な高レベルの情報を要求する。ステップ212で、アプリケーションプログラムが、APIから要求された情報を検索する。そして、このような処理がステップ206に戻る。] [0056] 図6は、動作検出デバイス10で実施される他のソフトウェア層とインタフェースをとるAPIの本発明の方法250を示すフローチャートである。処理は252で開始し、ステップ254において、APIがアプリケーションプログラムから高レベルのコマンドを受け取り、動作アルゴリズムをセットアップする。高レベルのコマンドは、いずれの高レベルの情報をアプリケーションプログラムが欲しているのかを示す設定値を与え、デバイス10のセンサによって与えられる動作センサデータに(少なくとも部分的に)基づいて動作アルゴリズムから検索する。図5を参照して上述したように、設定値は、情報のタイプ、情報が送られる速さ、情報が送られる条件等を特定する。APIは、関連するアプリケーションの的確な要求にしたがって、例えば、このようなアプリケーションに関する要求されたサンプリングレートで適切なセンサからサンプリングされる動作センサデータを処理することによって、アプリケーションプログラムから要求された情報を与える特定の動作アルゴリズムにコマンド及び設定値を変換する。] 図5 図6 [0057] ステップ256で、APIが、受け取ったコマンド及び設定値に基づいて、要求された動作アルゴリズムを開始し、これらのアルゴリズムがデバイス10の動作の際にバックグラウンドで動作する。APIは、アプリケーションプログラムの要求及び設定値を満足する特定のアルゴリズムを動作し得る。ある実施例では、アプリケーションプログラムからのコマンドは、特定のアルゴリズムを特定せずバックグラウンドで動作するのに十分高レベルであり、APIは適切なアルゴリズムを受け取ったコマンドと結び付ける。代替的な実施例では、受け取ったコマンドが、特定のアルゴリズムを特定し得る。アルゴリズムは、アプリケーションに要求される正確なタイミングで検出データをサンプリング及び処理することができ、アプリケーションプログラムの要求されたタイミングで、アプリケーションプログラムに受け取った情報を報告する。また、アルゴリズムは、アプリケーションプログラムによって特定される状態をチェックし得る。ある実施例では、APIといったより高いソフトウェア層が、このような特定の状態のいくつか又は全てをチェックし得る。] [0058] ステップ258では、連続的な情報を要求された場合、APIがアプリケーションプログラムに高レベルの情報を含む連続的な情報を与える。例えば、APIは、動作アルゴリズム層60の1又はそれ以上のアルゴリズムから処理情報を受け取ることができ、アプリケーションプログラムにこのようなデータを提供する。API又はアルゴリズムは、好適には情報を提供し、又はアプリケーションプログラムによって実行されるアプリケーションに適した特定の速さでアプリケーションプログラムに情報を検索又はサンプリングさせ得る。] [0059] ステップ260では、APIは、特定の情報に関するアプリケーションプログラムからの要求を受け取るか否かをチェックする。受け取らない場合、以下で説明するようにステップ264を開始する。受け取る場合、ステップ262で、APIがアプリケーションプログラムに要求された情報を与える。このような情報は、適切なアルゴリズムを要求しアルゴリズムから情報を受け取ることによって取得された。そして、この処理がステップ258に戻る。ステップ264で、APIが、アプリケーションプログラムに情報を送り始める事象が起こったか否かをチェックする。例えば、このような事象は、アプリケーションプログラム又は適合するAPIによって特定される1又はそれ以上の状況とすることができる。事象が発生しない場合、処理がステップ258に戻る。事象が発生する場合、ステップ266で、APIがアプリケーションプログラムに始動情報(一般に高レベルの情報)を与える。このような情報は、適切なアルゴリズムから取得された。そして、処理がステップ258に戻る。] [0060] ある実施例では、動作アルゴリズムの低レベルの処理が、受け取った高レベルのコマンド及びパラメータ又は動作アルゴリズムにAPIによって送られる指示によって示されるような、アプリケーションのタイプに特有な知的な処理を含んでいる。このため、デバイス10のどのアプリケーションが現状で動作しており、それに応じてこれらのアプリケーションに関する重要な態様となり得るのかを認識するのに十分知的な「内容認識」が提供され得る。例えば、使用される現状の動作アプリケーションが、ゲーム用アプリケーション又はナビゲーション用アプリケーションである場合、APIは、読み込むための適切なセンサこれらのセンサを読み込むためのタイミング要求を含むゲーム又はナビゲーションに関する適切な態様、及びユーザへのインタフェース機能及び出力を含む与えられる適切な高レベルの情報及び機能となり得る。] [0061] 例えば、低レベルの処理は、動作検出デバイスの全ての動作センサの全ての出力の検査を行って、アプリケーションプログラムによって実行されるアプリケーションのタイプに必要な高レベルの情報を判定することを含め得る。アプリケーションのタイプに応じて、低レベルの処理が、全ての動作センサの出力検査の後に、アプリケーションのタイプに必要となる動作センサの軸のサブセットのみを選択的に使用し得る。例えば、6軸のデバイス10で動作する特定のアプリケーションでは、アルゴリズムが3つのジャイロスコープ全て及び3つの加速度計全てを検査して、デバイス10が空間内で鉛直に保持され、加速度計からの検出データのみを処理してこのようなアプリケーションに関する高レベルの情報を形成するか;又はデバイスが空間内で水平に保持され、このようなアプリケーションについてジャイロスコープからの検出データのみを処理するかを判定し得る。他の実施例では、APIが受け取る高レベルのコマンドが、アプリケーションのタイプに基づいて、高レベルの情報を判定する際に動作センサのいずれの軸及び出力を選択的に使用するかを判定し得る。ある実施例では、高レベルのコマンドが使用する特定の軸及び出力の特定を必要とせず;むしろ、低レベルの処理が、特定の高レベルのコマンドが何であるかに基づいて、いずれのセンサ出力を使用するかを認識することができ、APIの処理がこのような高レベルのコマンドに関連する。] [0062] ある実施例では、現在動作しているアプリケーションで使用されない動作センサ(又はその特定の軸)の動作又は検出機能を停止することによって、動作センサの軸及び出力のいくつかのみの選択的な使用をさらに使用し得る。これにより、電力消費及び/又はデバイス10の処理の帯域幅を抑えることができる。] [0063] また、動作検出リソースに関する全体的なパワーマネージメントとともに、スリープモード及びウエイクアップモード含むさらなるパワーマネージメント態様をAPI層に含めることができる。例えば、API層が、ジャイロスコープ26への電源を切るアプリケーションプロセッサ12又はMPU20で動作する1又はそれ以上のプログラムを実行することができ、それらがデータを検出していない場合にいつでも、又はそれらのデータが未使用である場合に、他のセンサよりも多くの電力を消費する。一実施例では、デバイス10のいくつかの動作が他の動作センサによって検出される直後に、ジャイロスコープを「目覚めさせる」ことができる。] [0064] 本発明に係るAPIで使用され得るAPIコマンドの例を以下に示す。 mlInitializeSensors() mlGetRawData() mlGetCalibratedData() mlGetAugmentedData() mlGetHumanMotion() mlGetRotationMatrix() mlGetQuaternion() mlGetRoll mlGetPitch() mlGetYaw() mlHeading() mlGetLocation() mlGetPSF() mlGetBlurAmount() mlCalibrate() mlUpdateState() mlUpdateRotationMatrix() mlUpdateHumanMotion() mlUpdateGesture() mlRegisterGestures() mlGestureCallBack() mlUpdateKalmanFilter() mlUpdateSensorCalibration() mlSetNoiseMatrix() mlSetProcessMatrix() mlGeneratePSF() mlBlendlmages() mlEvaluateImage()] [0065] 複数のアプリケーションの同時処理 図7は、1又はそれ以上の連続的に動作するアプリケーションプログラムによる動作検出デバイス10上で同時に動作する(すなわち、同時に実行される)様々なアプリケーションについてデータを同時に処理するための、本発明に係る方法300を示すフローチャートである。本方法300は、複数のアプリケーションが現在動作しており、動作センサデータ又は動作センサデータから得られるデータを要求すると仮定する。いくつかの実施例では、動作アルゴリズム層60によって本方法300を実施し得る。] 図7 [0066] 現在動作するアプリケーションのうちの少なくとも2つが、異なる最小サンプリングレートでサンプリングされる動作センサデータを要求する。例えば、画像安定化アプリケーションが、500Hzといった高速でサンプリングされる動作センサデータを要求する一方、ユーザインタフェースアプリケーションが、50Hzといった低速でサンプリングされる動作センサデータを要求し得る。] [0067] 処理が302で開始し、ステップ304で、第1のサンプリングレートで検出データを受け取る。第1のサンプリングレートは、デバイス10で現在動作するアプリケーションが要する最低のサンプリングレート(必要とする最低のレートよりも高いサンプリングレートも使用し得る)として決定される。システム10で使用可能であるが現在動作していない他のアプリケーションプログラムのサンプリングレートは、このような第1のサンプリングレートの決定に関連しない。ステップ306で、第1の(最高の)サンプリングレートでサンプリングされる検出データを、デバイス10で動作する第1のアプリケーションで使用する(又は、2以上のアプリケーションが第1のサンプリングレートで最低速サンプリングされるデータを要求する場合には、複数の第1のアプリケーションで使用する)。上述のように、層60の動作アルゴリズムが検出データを処理して、API及び第1のアプリケーションを実行する第1のアプリケーションプログラムに処理された高レベルの情報を提供し得る。] [0068] ステップ308で、ステップ304において第1のサンプリングレートで受け取った検出データにローパスフィルタを使用し、デバイス10で現在動作する異なる第2のアプリケーションに適しているが第1のアプリケーションで使用するには低過ぎる、より低い第2のサンプリングレートを作り出す。例えば、第2のアプリケーションは、フィルタを用いて第1のサンプリングレートを低くすることができるように、第1のアプリケーションよりも低いレートでサンプリングされる検出データのみを必要とする。ステップ308のローパスフィルタは、ポイント移動平均、無限インパルス応答(IIR)フィルタ、有限インパルス応答(FIR)等といった、様々な異なるタイプのうちの任意のものとし得る。 する。ステップ310で、第2のサンプリングレートでサンプリングされた検出データを、第2のアプリケーションで使用する(又は、2以上が第2のサンプリングレートで検出データを使用し得る場合に、複数のアプリケーションで使用する)。本発明300の他のステップと同時にステップ310及び306を同時に実行し得る。] [0069] さらなるアプリケーションが現在動作しているおり様々なサンプリングレートでデータを使用し得る場合、ステップ312で、フィルタリングされた検出データにローパスフィルタを同様に使用して、現在動作しているさらなるアプリケーションについて、適切な場合、より低いサンプリングレートを作り出し、これらのさらなるアプリケーションにサンプリングされたデータを使用する。このようなアプリケーションが動作している場合、ステップ308の第2のサンプリングレートは、現在動作するアプリケーションプログラムで要求される2番目に高いサンプリングレートであり、ステップ312のサンプリングレートは、ステップ308の第2のサンプリングレートよりも低い。例えば、2つのさらなるアプリケーションが、異なった、より低いサンプリングレートを使用し得る場合、第2のサンプリングレートによって与えられるデータをフィルタリングして、アプリケーションのうちの1つに適した第3のサンプリングレートを与え、第3のサンプリングレートのデータをフィルタリングして第4の、他のアプリケーションに対して、より低いサンプリングレートを与える。そして、このような処理が314で完了する。] [0070] このように、方法300により、階層フォーマットのデータのローパスフィルタリングによって、様々なサンプリングレート要求を具えた様々なアプリケーションを通常は難しい課題であるデバイス10で実行し得る。例えば、ぼやけの計算が、500Hzでサンプリングされる検出データを要求し、ユーザインタフェースアプリケーションが、100Hzのサンプリングレートを要求し、ナビゲーションアプリケーションが20Hzのサンプリングレートを要求する。アプリケーションプログラムのレベルでは、ユーザインタフェースディスプレイを10Hzで更新し得る一方、ナビゲーションデータを1HzでGPSデータと合わせる。このようなアプリケーションを同時に動作させる動作検出エンジンは、様々なサンプリングレートで動作センサデータを同時に受け取って、複数のアプリケーションについての検出データを同時に処理することが可能である必要がある。例えば、ユーザが、動作ジェスチャでカメラユーザインタフェースをコントロールする一方、ぼやけが無い写真を撮りたい可能性がある。同時に、デバイスは、カメラでの適用の際にデバイスの位置が失われないように、デッドレコニングが可能となる。GPS機能を有するカメラ付き電話では、ユーザは、写真を撮る度にユーザの位置情報を失いたくない可能性がある。] [0071] 方法300で説明される階層フォーマットでのフィルタリングにより、1つの最速のサンプリングレートから抽出される様々なサンプリングレートが可能となる。電子画像安定化に関しては、例えば、250Hzのアンチエイリアスフィルタによって500Hzで生の検出データをサンプリングし得る。ステップ308の10ポイントの移動平均(例えば、使用し得るローパスフィルタの1つのタイプ)は、さらなるアンチエイリアスを与え、500Hzから50Hzに帯域幅を減らし、ユーザインタフェースのアプリケーションについて100Hzのサンプリングレートが可能となる(アプリケーションが、センサのサンプリングレートを最大2倍にするサンプリングレートが可能となる)。別の10ポイントの移動平均を100Hzで使用して、20Hzのナビゲーションフィルタに適した10Hzの帯域幅を与え得る。これらのフィルタ全ての出力を、ユーザが認識することなしに、それらの各サンプリングレートで更新し得る。これは、画像安定化フィルタのみが最速のサンプリングレートで動作することが必要であるため、アプリケーションの処理時間を最小限にする。] [0072] 別の例では、画像安定化アプリケーションを、ユーザインタフェースアプリケーションと組み合わせることができる。生の加速度計のデータ又は増大したデータのいずれか(本例では、加速度計28及びジャイロスコープ26双方からの検出データから得られる重力加速度)を使用して、カメラの向きを追跡することができ、画像回転(ポートレート又は景色)及び平滑化情報に使用される。同時に、ユーザによってジェスチャもまた入力することができ、例えば、静止カメラモードからビデオカメラモードへの切り替えといったカメラモードを制御し得る。本発明を使用して、ぼやけのデータに使用される高いサンプリングレートのジャイロスコープ検出データが、ジェスチャ認識データに使用される低いサンプリングレートのジャイロスコープ検出データと同時に取得される。] [0073] さらに別の実施例では、ナビゲーションをユーザインタフェースアプリケーションと組み合わせることができる。ナビゲーションアプリケーションに関するデッドレコニングアルゴリズムの作動に加えて、携帯型デバイスもまた、地図の回転アルゴリズム及びユーザインタフェースアプリケーションについてのユーザ入力アルゴリズムを作動させることを要求し得る。地図の回転が、効果的なユーザインタフェースのために低遅延を要求するが、ナビゲーションアルゴリズムは、20Hzで動作することのみを要求するため、本発明を使用して、これらのアルゴリズムが様々なサンプリングレートで同時に動作し得る。] [0074] また、本発明によって提供される様々なサンプリングレートを、デバイス10のパワーマネージメントに使用し得る。ある実施例では、デバイス10の消費電力を減らすことができ、それは、歩行者ナビゲーションといったハンドヘルド又は携帯型のアプリケーションで重要となり得る。例えば、ナビゲーションのアプリケーションでは、GPSユニットを、デバイス10に接続された付加的ユニットとしてデバイスの位置を判断し得る。層60のデッドレコニングアルゴリズムは、GPS受信器と組み合わせて使用され、GPS受信器を単独で使用して位置を判断する場合よりも正確に現在位置を判断し得る。デッドレコニングフィルタは、GPSユニットによって要求される処理を減らし得るという、さらなる利点を有し、これにより電力を減らす。GPS位置検索を具えたデッドレコニングを使用する場合、1HzのGPSサンプリングレートを0.1Hzに減らすことができるか、又は衛星追跡が12個の衛星の代わりに3つの衛星のみを追跡する。デッドレコニングアルゴリズムによって実現される付加的情報によって、GPSアプリケーションアルゴリズムの誤差をオフセットし得る。] [0075] ハードウェア及びソフトウェアバッファリング MPU20といったハードウェアをデバイス10で使用する理由は、アプリケーションプロセッサ12及び/又はデバイス10の他のプロセッサに負担となる処理を減らすことである。動作センサデータを取得するためのソフトウェアのみを用いることは、プロセッサ/CPUのオーバーヘッド、タイミング制約、及びコーディング又はカスタマイズ及び移植性の困難さにより、効率が悪い可能性がある。理想的には、動作検出ドライバは、CPUタイムのわずか1%を使用しなければならず、正確なタイミングの保証が、携帯型デバイスのオペレーティングシステムの中では難しい。しかしながら、ハードウェアは、コストの増加、及び形態の不正確さ及び制限を含む、いくつかの理由のために、全ての検出機能を実行するよう使用されない。例えば、センサ集積回路に必要以上のハードウェア処理部を付け加えることは、ダイエリアを増加させるが、これは、同じ処理がアプリケーションプロセッサ12のソフトウェアで実行される場合に、不要である。] [0076] 多くの場合、動作検出のための正確なタイミングは、アルゴリズムへのデータ入力を要するが、ユーザへの出力を要さず、すなわち、タイミング要求は、ユーザへのアプリケーションプログラムの出力について、より緩和される。例えば、ユーザインタフェースのアプリケーションでは、動作検出は多くの場合100Hzで実行され、正確なタイミングが必要とする動作全てを取得する。しかしながら、アプリケーションによるユーザへの出力は10Hzでありタイミングは不正確である。] [0077] 本発明の実施例は、ハードウェア及び/又はソフトウェアを使用して、アプリケーションプログラムの出力についてタイミング制約が緩和された利点を有し、これによりアプリケーションプロセッサの処理時間を減らし得る。ある実施例は、高速プロセッサを有するこれらのシステムに関するソフトウェアでのさらなる処理を提供し得る一方、他の実施例が、より遅いプロセッサ又は他の処理負荷を具えたシステムに関するハードウェアでのさらなる処理を提供し得る。ある実施例では、同じAPI層56を使用して、アプリケーションプログラムに得られる高レベルの情報を提供することができ、任意のシステムへの最大限の移植性が可能となる。] [0078] 図8Aは、バッファリングを与えて動作検出出力を受け取る際にアプリケーションプロセッサの処理を減らすための、本発明の第1の方法400を示すフローチャートである。方法400は、ハードウェアバッファリングを使用し、アプリケーションプロセッサ12が検出データを取得する際にそのタイミング制約を緩和し得る。] 図8A [0079] 本方法は402で開始し、ステップ404で、MPU20が高速で動作センサデータをサンプリングし、ハードウェアバッファに検出データを記録する。例えば、ハードウェアバッファは、図1に示すようなMPU20のハードウェア処理ブロック30、又はデバイス10の様々に接続されたハードウェアとすることができる。MPUは、特定のアプリケーションに関して動作データを取得するために通常要される高速且つ正確なタイミングで検出データをサンプリングする。] 図1 [0080] ステップ406で、アプリケーションプロセッサ12は、プロセッサ12がMPUよりも低速でハードウェアバッファ(及び検出データ)をサンプリングして検出データを記録する場合、最後にバッファを読み込む時からハードウェアバッファに蓄えられた全ての検出データを読み込む。プロセッサは、ハードウェアバッファのこれら全ての検出データポイントを一度に読み込む。] [0081] ステップ408で、検索された複数の検出データポイントに基づいて、立て続けに動作アルゴリズムを更新し、低いサンプリングレートでアプリケーションプログラムにアルゴリズムを与える。これは、要求される低いサンプリングレートでアプリケーションプログラムに情報を与える。そして、このような処理がステップ404に戻る。] [0082] バッファ内の検出データの蓄積により、アプリケーションプロセッサ12のアプリケーションプログラムが、動作情報の喪失なしに、MPUからのデータのサンプリングに関するタイミング制約を緩和させる。例えば、MPUハードウェアは、100Hzの高速でバッファに検出データを記録し得る。アプリケーションプロセッサ12のアプリケーションプログラムは、わずか10Hzのサンプリングレートでの動作に基づいてディスプレイスクリーンの更新を必要とする。方法400を用いて、動作アルゴリズムが、10Hzの速さで一度にMPUバッファに記憶された全てのデータを読み込み得る。このため、10のデータ点がバッファにある場合、動作アルゴリズムを立て続けに10回更新し、動作アルゴリズムによるディスプレイ情報出力が、事実上10Hzでアプリケーションプログラムに与えられる。これにより、例えば10Hzの速さ(ディスプレイのリフレッシュ速度)で、必要な場合にのみ、アプリケーションプロセッサ12がバッファを読み込むことができ、これにより、プロセッサ12のトータルの処理時間を減らす。動作アルゴリズムは、受け取った動作データの全てのデータ点を用いて平均してより高速で依然として動作するため、このような減少は、大規模でなくともよい。] [0083] 図8Bは、バッファリングを与えて動作検出出力を受け取る際にアプリケーションプロセッサの処理を減らすための、本発明の第2の方法420を示すフローチャートである。方法420は、ソフトウェアバッファリングを使用し、アプリケーションプロセッサ12が検出データを取得する際のそのタイミング制約を緩和させ得る。] 図8B [0084] 本方法は422で開始し、ステップ424で割り込みルーチンが高速で動作センサデータをサンプリングする。割り込みルーチンは、アプリケーションプロセッサ12上で動作するソフトウェアルーチンであり、例えば、アルゴリズム層60で提供し得る。割り込みルーチンは、高速で且つ通常要する正確及び厳密なタイミングでMPU20から検出データをサンプリングし、アプリケーションに適した動作データを取得する。ステップ426で、割り込みルーチンが、データを処理することなしに、ステップ424でソフトウェアバッファに読み込まれたデータを記憶する。例えば、ソフトウェアバッファは、アプリケーションプロセッサにアクセス可能なメモリであり、アプリケーションプロセッサ12(レジスタ、RAM等)、デバイス10のメモリ14、又は他の使用可能なメモリに提供し得る。] [0085] ステップ428で、割り込みルーチンがプロセッサ12に割り込んで、読み込むべき十分な検出データを蓄えていることを示す。ステップ430で、アプリケーションプロセッサ12(例えば、動作アルゴリズム)が、バッファを読み込んだ最後の時からソフトウェアバッファに蓄えられた全ての検出データを読み込む。このため、プロセッサ12は、検出データをサンプリン且つ記憶するのに使用される割り込みルーチンよりも低速で検出データを読み込む。ステップ432で、検索された複数の検出データ点に基づいて、動作アルゴリズムを立て続けに更新し、より低いサンプリングレートでアプリケーションプログラムにアルゴリズムの最終出力を与える。これにより、必要とされるより低いサンプリングレートでアプリケーションプログラムに情報を与える。そして、このような処理がステップ424に戻る。] [0086] 図8Aのハードウェアバッファの実施例を具えることで、バッファ内の検出データの蓄積により、何らかの動作情報の喪失なしに、アプリケーションプロセッサ12がアプリケーションプログラムの出力に関するそのタイミング制約を緩和させ得る。例えば、割り込みルーチンタイムは、100Hzの高速でバッファに検出データをサンプリング且つ記憶し得るが、アプリケーションプログラム12はソフトウェアバッファに記憶された全てのデータを緩和された速さで一度に読み込み得る。このため、10Hzのサンプリングレートで、アプリケーションプロセッサがバッファ内の直近の10データ点を検索することができ、立て続けに10回ほど動作アルゴリズムを処理し、ディスプレイアプリケーションプログラムが10Hzでアルゴリズムから適切な情報を検索することができ、10Hzでその出力を与える。] 図8A [0087] 図8Cは、バッファリングを提供して動作検出出力を受け取る際のアプリケーションプロセッサの処理を減らすための、本発明の第3の方法450を示すフローチャートである。方法450は、ハードウェア割り込みを使用し、アプリケーションプロセッサ12が検出データを取得する際のそのタイミング制約を減らし得る。] 図8C [0088] 本方法は452で開始し、ステップ454でMPU20が検出データを検索し、検出データがバッファに記憶される。このようなサンプリングは、高速で且つ通常要する正確及び厳密なタイミングで実行され、動作センサデータを取得する。ハードウェアバッファに又はソフトウェアバッファに検出データを記憶し得る。] [0089] ステップ456で、MPUがバッファリングされた検出データをスキャンする。ステップ458で、MPUが、何らかの「関心のある」特性がスキャンされた検出データの中に検出されたか否かをチェックする。このような特性は、特定のアルゴリズム又はアプリケーションをアプリケーションプロセッサ12に報知するように、特定のアルゴリズム又はアプリケーションに関連するデータのパターン又は態様である。例えば、このような特性は、超えている所定の閾値、又は特定の動作タイプを示すデータのパターンを含め得る。例えば、ユーザによってジェスチャが行われる場合に、少なくとも1の検出センサについての閾値を超える可能性がある。あるいは、デバイス10のカメラのレンズ部分のジッタのレベルを示す特定の閾値が超える可能性がある。ステップ458でMPUによって関心のある特性が検出されない場合、処理がステップ454に戻る。] [0090] 1又はそれ以上の関心のある特性が検出された場合、ステップ460でMPUがアプリケーションプロセッサに割り込みを送信する。このような割り込みは、関心のある特性が検出されアプリケーションプロセッサによって検査すべきであることを、アプリケーションプロセッサに示すものである。このため、ステップ462で、アプリケーションプロセッサ12がバッファに記憶された検出された関心のある特性を含むデータを検索するが、例えば、MPUが、プロセッサ12が読み込み得る様々なバッファ又はバッファの他の領域の関心のある特性データをバッファリングすることができ、又はMPUがメインバッファで読み込む場所を指定し得る。そして、例えば、アルゴリズム層60のアルゴリズムでデータを処理して減少したサンプリングレートでアプリケーションプログラムにAPI層56を介してデータを与えることによって、アプリケーションプロセッサ12が、アプリケーションに適合するように検索データを分析する。そして、このような処理がステップ454に戻る。] [0091] 検索データの特定の特性をチェックするためのMPUハードウェアの使用は、アプリケーションプロセッサの処理オーバーヘッドを減らし得る。1秒当たり5回の関心のある特性の検出といったことで、MPUが高速でアプリケーションプロセッサに割り込みを送信したとしても、アプリケーション処理の回数を依然として減らし、アプリケーションプログラム処理は100Hzから5Hzに動作する必要がある。このような実施例では、アプリケーションプログラム12に関する全てのソフトウェアについてのタイミング制約が減り、これにより、プロセッサ12の処理時間もまた減少する。] [0092] 図8Dは、バッファリングを与えて動作検出出力を受け取る際のアプリケーションプロセッサの処理を減らすための、本発明の第4の方法を示すフローチャートである。方法470は、ハードウェア予処理のより進んだ方法を使用し、アプリケーションプロセッサ12が検出データを取得する際のそのタイミング制約を減らし得る。] 図8D [0093] 本方法は472で開始し、ステップ474でMPU20が検出データを検索し、検出データがMPUのハードウェアバッファといったバッファに記憶される。このようなデータは、高速で且つ通常要する正確なタイミングでサンプリング且つ記憶され、動作センサデータを取得する。ステップ476で、MPUが検出データを予処理して、1又はそれ以上のアプリケーションについての関連する態様のセットにデータを減らす。MPUは、アプリケーションプロセッサソフトウェアの動作アルゴリズム層60に存在する動作アルゴリズムと同じような動作アルゴリズム又は動作アルゴリズムのサブセットを含め得る。例えば、ある実施例では、MPUは検出データを処理することによって、特定のジェスチャを検出し得る。このような処理能力により、どの態様がアプリケーションプロセッサ12で動作するアプリケーションに関連するのかを判断することができ、及び/又はアプリケーションプログラムに関する高レベルの情報を与え得る。例えば、関連する態様は、慣性データの微分値又は積分値から計算されるパラメータとすることができる。] [0094] ステップ478で、関連する態様のセットが、動作センサデータを取得するのに使用されるサンプリングレートよりも低いサンプリングレートでアプリケーションプロセッサ12のアプリケーションに与えられる。このため、例えば、検出データを取得するための100Hzのサンプリングレートを、アプリケーションプロセッサに関連する情報のみを与える5Hzのサンプリングレートに減らすことができる。そして、減少したサンプリングレートで関連する態様をアプリケーションプログラムに(又は減少したサンプリングレートでアプリケーションプログラムに情報を与える、さらなる処理のためのアプリケーション動作アルゴリズムに)与え得る。図8Cの実施例と同じように、本実施例では、アプリケーションプロセッサ12の全てのソフトウェアについてタイミング制約が減少し、これにより、プロセッサ12の処理時間もまた減少する。] 図8C [0095] 図示する実施例で本発明を説明したが、これらの実施例に対するバリエーションが可能であり、これらのバリエーションは本発明の精神及び範囲から逸脱するものではないことを当業者は容易に理解するであろう。従って、当業者は、添付の特許請求の範囲の精神及び範囲から逸脱せずに多くの改良を行い得る。]
权利要求:
請求項1 動作検出デバイスに提供される1又はそれ以上のアプリケーション用のインタフェースを提供するための方法であって、前記方法が:前記動作検出デバイスで動作するアプリケーションプログラムから高レベルのコマンドを受け取るステップであって、前記アプリケーションプログラムが、前記動作検出デバイスで使用し得る複数の異なる種類のアプリケーションのうちの1つを実行し、前記高レベルのコマンドが、前記動作検出デバイスの複数の動作センサの出力から得られる高レベルの情報を要求するステップと;前記高レベルのコマンドを変換して、前記動作センサによって出力される複数の軸の動作センサデータの低レベルの処理を生じさせるステップであって、前記低レベルの処理が、前記アプリケーションの種類の要求に従い、前記高レベルのコマンドを受け取るのに応じて前記動作センサデータからの前記高レベルの情報をインテリジェントに判定し、前記動作センサが、複数の回転運動センサ及び複数の直線運動センサを有しており、前記アプリケーションプログラムが前記低レベルの処理を無視するステップと;前記アプリケーションプログラムに前記高レベルの情報を提供するステップと;を具えることを特徴とする方法。 請求項2 前記アプリケーションの種類の要求が、前記動作センサから得られる前記動作センサデータ用の高精度なサンプリングレートを有することを特徴とする請求項1に記載の方法。 請求項3 前記動作センサデータが、前記アプリケーションの要求に従う高精度なサンプリングレートで前記動作センサから得られ、前記動作検出デバイスで使用し得る前記複数の異なる種類のアプリケーションの少なくとも2つが、前記動作センサデータ用の異なるサンプリングレート要求を有することを特徴とする請求項1に記載の方法。 請求項4 前記アプリケーションプログラムに前記高レベルの情報を提供するステップが、前記高レベルの情報が前記アプリケーションプログラムによって実行される前記アプリケーションの種類に適したサンプリングレートで前記アプリケーションプログラムによって受け取られるように、前記高レベルの情報を提供するステップを有することを特徴とする請求項1に記載の方法。 請求項5 前記高レベルの情報が、前記動作センサデータをサンプリングするよう使用されるサンプリングレートよりも低いサンプリングレートで前記アプリケーションプログラムによって受け取られることを特徴とする請求項1に記載の方法。 請求項6 前記動作検出デバイスで使用し得る前記異なる種類のアプリケーションを実行する複数の異なるアプリケーションプログラムが、前記動作検出デバイスで同時に動作することを特徴とする請求項1に記載の方法。 請求項7 前記複数の異なるアプリケーションプログラムは、前記高レベルの情報が互いに異なるサンプリングレートで提供されるのを要求し、前記アプリケーションのうちの1つに関する前記動作センサデータの前記サンプリングレートが、前記アプリケーションのうちの別の1つに関する前記動作センサデータの前記サンプリングレートをフィルタリングすることによって得られることを特徴とする請求項6に記載の方法。 請求項8 前記動作検出デバイスで使用し得る前記複数の異なる種類のアプリケーションが、動作検出アプリケーション、画像安定化アプリケーション、及びナビゲーションアプリケーションのうちの少なくとも1つを有することを特徴とする請求項1に記載の方法。 請求項9 前記動作センサデータの処理が、前記動作検出デバイスの作動中にバックグラウンドで1又はそれ以上の動作アルゴリズムを実行することを含んでおり、前記動作アルゴリズムが、1又はそれ以上の条件について前記動作センサデータが適合することをチェックし、合致する場合に前記アプリケーションプログラムに通知することを特徴とする請求項1に記載の方法。 請求項10 さらに、より高いサンプリングレートで取得され高精度なタイミング要求を具える前記動作センサデータをバッファリングするステップと、バッファリングされた前記動作センサデータを処理するステップと、より低いサンプリングレート及び緩和されたタイミング要求で、前記アプリケーションプログラムに前記バッファリングされた動作センサデータを提供するステップと、を具えることを特徴とする請求項1に記載の方法。 請求項11 前記複数の回転運動センサが、3つのジャイロスコープを有しており、前記複数の直線運動センサが、3つの加速度計を有しており、前記ジャイロスコープ及び前記加速度計が、6軸の検出を与えることを特徴とする請求項1に記載の方法。 請求項12 前記高レベルの情報が、さらに、前記動作検出デバイスの付加的なセンサから判定され、前記付加的なセンサが、温度センサ、圧力センサ、及びコンパスのうちの少なく1つを有することを特徴とする請求項1に記載の方法。 請求項13 前記低レベルの処理が、前記動作検出デバイスの全ての前記動作センサの出力の全てを試験して前記高レベルの情報を判定することを有することを特徴とする請求項1に記載の方法。 請求項14 前記低レベルの処理が、前記動作センサの出力の全てを試験した後に、前記アプリケーションの種類用に前記動作センサの軸の一部のみを選択的に使用するよう判定することを特徴とする請求項13に記載の方法。 請求項15 前記低レベルの処理が、前記アプリケーションの種類によって使用されない動作センサの作動を停止して、消費電力又は処理の帯域幅を節約することを特徴とする請求項14に記載の方法。 請求項16 前記低レベルの処理が、特定の高レベルのコマンドに基づいて、前記高レベルの情報を判定する際に、前記動作センサのいずれの出力を選択的に使用するのかを判定することを特徴とする請求項1に記載の方法。 請求項17 前記低レベルの処理が、前記動作検出デバイスのアプリケーションプロセッサから区別され且つこれと通信する動作処理ユニットによって、少なくとも一部で実行されることを特徴とする請求項1に記載の方法。 請求項18 動作検出デバイスで動作するアプリケーションプログラムに前記動作検出デバイスの動作センサからの動作センサデータを提供するための方法であって、前記方法が:第1のサンプリングレートで前記動作センサによって出力される動作センサデータをサンプリングするステップであって、前記動作センサが、複数の回転運動センサ及び複数の直線運動センサを有するステップと;バッファに前記動作センサデータを記憶するステップと;前記アプリケーションプログラムによって実行されるアプリケーションによって要求される第2のサンプリングレートで、前記アプリケーションプログラム用にバッファリングされた動作センサデータの少なくとも一部を検索するステップと;を具えており、前記第2のサンプリングレートが、前記第1のサンプリングレートよりも低いことを特徴とする方法。 請求項19 前記バッファが、アプリケーションプロセッサとは別個の動作処理ユニットで実装されるハードウェアバッファであることを特徴とする請求項18に記載の方法。 請求項20 前記バッファが、メモリで実装されるソフトウェアバッファであり、割り込みルーチンが、前記動作センサデータをサンプリングして、前記アプリケーションプログラムを実行するアプリケーションプロセッサに割り込み、前記バッファリングされた動作センサデータの少なくとも一部を検索することを特徴とする請求項18に記載の方法。 請求項21 アプリケーションプロセッサとは別個の動作処理ユニットが、記憶された前記動作センサデータをスキャンして、前記アプリケーションプログラムに関連する特性を検出することを特徴とする請求項18に記載の方法。 請求項22 アプリケーションプロセッサとは別個の動作処理ユニットが、前記アプリケーションプログラムに関連する特徴のセットへと前記バッファ中の前記動作センサデータを減らし、前記バッファリングされた動作センサデータの検索された部分が、前記特徴のセットであることを特徴とする請求項18に記載の方法。 請求項23 動作検出デバイスの動作センサからの動作センサデータを処理するための方法であって、前記方法が:前記動作センサデータを使用して前記動作検出デバイスで第1のアプリケーションを実行する第1のアプリケーションプログラムに情報を提供するように、第1のサンプリングレートで前記動作センサによって出力される動作センサデータをサンプリングするステップであって、前記動作センサが、複数の回転運動センサ及び複数の直線運動センサを有するステップと;前記第1のサンプリングレートよりも低い第2のサンプリングレートに前記動作センサデータをローパスフィルタリングするステップと;を具えており、フィルタリングされた前記動作センサデータを使用して、前記第1のアプリケーションとは異なる前記動作検出デバイスの第2のアプリケーションを実行する第2のアプリケーションプログラムに情報を提供し、前記第1及び第2のアプリケーションプログラムが、前記動作検出デバイスで同時に動作し、前記第1のアプリケーションは、動作センサデータが前記第2のサンプリングレートよりも高いサンプリングレートでサンプリングされるのを要求することを特徴とする方法。 請求項24 コンピュータによって実行されるプログラム命令を記憶し、動作検出デバイスで提供される1又はそれ以上のアプリケーション用のインタフェースを提供するためのコンピュータ可読媒体であって、前記プログラム命令が:前記動作検出デバイスで実行するアプリケーションプログラムから高レベルのコマンドを受け取るステップであって、前記アプリケーションプログラムが、前記動作検出デバイスで使用し得る複数の異なる種類のアプリケーションのうちの1つを実行し、前記高レベルのコマンドが、前記動作検出デバイスの複数の動作センサの出力から得られる高レベルの情報を要求するステップと;前記高レベルのコマンドを変換して、前記動作センサによって出力される複数の軸の動作センサデータの低レベルの処理を生じさせるステップであって、前記低レベルの処理が、前記アプリケーションの種類の要求に従い、前記高レベルのコマンドを受け取るのに応じて前記動作センサデータからの前記高レベルの情報をインテリジェントに判定し、前記動作センサが、複数の回転運動センサ及び複数の直線運動センサを有しており、前記アプリケーションプログラムが前記低レベルの処理を無視するステップと;前記アプリケーションプログラムに前記高レベルの情報を提供するステップと;を具えるステップとを実行することを特徴とするコンピュータ可読媒体。 請求項25 前記アプリケーションの種類の要求が、前記動作センサから得られる前記動作センサデータ用の高精度のサンプリングレートを有することを特徴とする請求項24に記載のコンピュータ可読媒体。 請求項26 前記動作センサデータが、前記アプリケーションの要求に従う高精度のサンプリングレートで前記動作センサから得られ、前記動作検出デバイスで使用し得る前記複数の異なる種類のアプリケーションの少なくとも2つが、前記動作センサデータ用の異なるサンプリングレート要求を有することを特徴とする請求項24に記載のコンピュータ可読媒体。 請求項27 前記アプリケーションプログラムに前記高レベルの情報を提供するステップが、前記高レベルの情報が、前記アプリケーションプログラムによって実行される前記アプリケーションの種類に適したサンプリングレートで、前記アプリケーションプログラムによって受け取られるように、前記高レベルの情報を提供するステップを有することを特徴とする請求項24に記載のコンピュータ可読媒体。 請求項28 前記動作検出デバイスで使用し得る前記異なる種類のアプリケーションを実行する複数の異なるアプリケーションプログラムが、前記動作検出デバイスで同時に動作することを特徴とする請求項24に記載のコンピュータ可読媒体。 請求項29 前記複数の異なるアプリケーションプログラムは、前記高レベルの情報が互いに異なるサンプリングレートで提供されるのを要求し、前記アプリケーションのうちの1つに関する前記動作センサデータの前記サンプリングレートが、前記アプリケーションのうちの別の1つに関する前記動作センサデータの前記サンプリングレートをフィルタリングすることによって得られることを特徴とする請求項28に記載のコンピュータ可読媒体。 請求項30 さらに、より高いサンプリングレートで取得され高精度なタイミング要求を具える前記動作センサデータをバッファリングするステップと、バッファリングされた前記動作センサデータを処理するステップと、より低いサンプリングレート及び緩和されたタイミング要求で、前記アプリケーションプログラムに前記バッファリングされた動作センサデータを提供するステップと、を具えることを特徴とする請求項24に記載のコンピュータ可読媒体。 請求項31 前記動作検出デバイスに提供される1又はそれ以上のアプリケーション用のインタフェースを有する動作検出デバイスであって、前記動作検出デバイスが:前記動作検出デバイスの動作を検出するための複数の動作センサを有する動作処理ユニットであって、前記動作センサが、複数の回転運動センサ及び複数の直線運動センサを有する動作処理ユニットと;前記動作処理ユニットに接続されるアプリケーションプロセッサであって、前記動作検出デバイスで使用し得る複数の異なる種類のアプリケーションのうちの1つを実装するアプリケーションプログラムと;前記アプリケーションプログラムから高レベルのコマンドを受け取るアプリケーションインタフェースであって、前記高レベルのコマンドが、前記動作検出デバイスの前記動作センサの出力から得られる高レベルの情報を要求するアプリケーションインタフェースと;を提供するアプリケーションプロセッサと;を具えており、前記アプリケーションインタフェースが、前記高レベルのコマンドを変換して、前記動作センサによって出力される動作センサデータの低レベルの処理を生じさせ、前記低レベルの処理が前記アプリケーションの種類の要求に従い、前記高レベルのコマンドを受け取るのに応じて前記高レベルの情報を判定し、前記アプリケーションプログラムが前記低レベルの処理を無視し、前記アプリケーションインタフェースが、前記アプリケーションプログラムに前記高レベルの情報を提供することを特徴とする動作検出デバイス。
类似技术:
公开号 | 公开日 | 专利标题 US20180088775A1|2018-03-29|Method of controlling mobile device with touch-sensitive display and motion sensor, and mobile device US20180129281A1|2018-05-10|Fast wake-up in a gaze tracking system US10095316B2|2018-10-09|Scrolling and zooming of a portable device display with device motion JP6553124B2|2019-07-31|複数センサ入力のためのセンサフュージョンインタフェース AU2014315443B2|2019-10-03|Tilting to scroll EP2743795B1|2018-05-30|Electronic device and method for driving camera module in sleep mode US8922487B2|2014-12-30|Switching between a first operational mode and a second operational mode using a natural motion gesture CN104995581B|2018-05-29|电子设备的手势检测管理 US10534431B2|2020-01-14|Tracking finger movements to generate inputs for computer systems US10719981B2|2020-07-21|Generating a three-dimensional model using a portable electronic device recording JP5539443B2|2014-07-02|センサーインタフェース並びにセンサーインタフェースに関連する方法および装置 US8015718B2|2011-09-13|Orientation-sensitive signal output TWI547878B|2016-09-01|電腦實施方法、用以將與情境感知應用相關之功能性委外給感測器中心的系統、及非暫態性機器可讀取媒體 US9726498B2|2017-08-08|Combining monitoring sensor measurements and system signals to determine device context USRE42336E1|2011-05-10|Intuitive control of portable data displays US7696980B1|2010-04-13|Pointing device for use in air with improved cursor control and battery life US9121724B2|2015-09-01|3D position tracking for panoramic imagery navigation US9733730B2|2017-08-15|Systems and methods for navigating a scene using deterministic movement of an electronic device JP5014706B2|2012-08-29|ディスプレイ表面上にポインティングデバイスによって表示されるポインタの場所を制御するための方法 US8704767B2|2014-04-22|Environmental gesture recognition US8220329B2|2012-07-17|Management system for MEMS inertial sensors US8351773B2|2013-01-08|Motion sensing and processing on mobile devices US20140368412A1|2014-12-18|Wireless Hands-Free Computing Headset With Detachable Accessories Controllable by Motion, Body Gesture And/Or Vocal Commands KR101469312B1|2014-12-04|움직임 센서들을 사용하는 가상 버튼들의 생성 US8325151B1|2012-12-04|Orientation-based touchscreen display
同族专利:
公开号 | 公开日 US20090184849A1|2009-07-23| US20150234481A1|2015-08-20| US20150193006A1|2015-07-09| CN101911048A|2010-12-08| US9342154B2|2016-05-17| EP2255297A1|2010-12-01| EP2255297B1|2019-11-27| WO2009091873A1|2009-07-23| US8952832B2|2015-02-10| CN101911048B|2014-07-16| US9811174B2|2017-11-07| EP2255297A4|2014-03-26|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|